双位词与单位词
❦
我之前曾提到过那些古老的、廉价科幻杂志时代的封面:上面画着一个凸眼怪物正掳走一个衣裙破碎的女孩;我还谈过,人们会像这样思考:仿佛性感是性感对象自身的内在属性,而与爱慕者无关。
“当然,凸眼怪物会更喜欢人类女性,而不是它自己的同类。”画家说道(我们姑且称他为 Fred),“它看得出来,人类女性有柔软宜人的皮肤,而不是滑腻的鳞片。它也许是外星人,但它又不是愚蠢——你怎么会指望它在性感这种最基本的问题上犯这种错误?”
Fred 的错误是什么?那就是他把一个有两个参数的函数(“双位函数”):
Sexiness: Admirer, Entity ➝ [0, ∞),
当成了一个只有一个参数的函数(“单位函数”):
Sexiness: Entity ➝ [0, ∞)。
如果把 Sexiness 当成一个只接收单个 Entity 作为参数的函数,那么 Sexiness 看上去当然就只会依赖于 Entity,而其他任何东西都显得无关紧要。
当你把一个双位函数想成单位函数时,你最终就会落入变量问题谬误 / 心智投射谬误。这就像试图判断:一栋楼究竟是在道路的左边还是右边,仿佛这件事内在地成立,与任何人的行进方向都无关。
另一种同样成立的看法是:「性感」确实指的是一个单位函数——但每个说话者用来决定该去绑走谁、蹂躏谁的,都是不同的单位函数。谁说画家 Fred 和那个凸眼怪物 Bloogah 都用了 “sexy” 这个词,他们就一定是在说同一件事?
如果你采取这种视角,那么说某个女人内在地具有 5 个单位的 Fred::Sexiness,就毫无悖论。只要 Fred::Sexiness 已经根据曲线、皮肤质感、衣着、地位线索等因素被规定清楚,所有旁观者都可以对这一事实达成一致。而这种规定完全不必提到 Fred,只需要提到那个被评估的女人。
碰巧,Fred 本人会使用这个算法来挑选调情对象。可这并不意味着这个算法本身就必须提到 Fred。所以在这种观点下,Fred 的 Sexiness 函数确实是一个只有一个参数的函数——也就是那个女人。我把它叫作 Fred::Sexiness,但请记住,这个名字指向的是一个独立于 Fred 而被描述出来的函数。也许更好的写法是:
Fred::Sexiness == Sexiness_20934。
至于 Fred 会使用函数 Sexiness_20934 来评估潜在伴侣,这是一个关于 Fred 的经验事实。也许 John 用的恰好就是同一个算法;一旦我们已经拿到了这个算法,它来自哪里也就无关紧要了。
类似地,同一个女人在 Sexiness_72546 下只有 0.01 个单位,而一个黏菌却有 3 个单位的 Sexiness_72546。碰巧,Bloogah 用 Sexiness_72546 来决定该绑走谁,这同样是一个经验事实;也就是说,Bloogah::Sexiness 这个名字,指向的是那个独立于 Bloogah 的、固定的数学对象——函数 Sexiness_72546。
一旦我们说某个女人拥有 0.01 个单位的 Sexiness_72546,同时又拥有 5 个单位的 Sexiness_20934,那么所有观察者都可以无矛盾地同意这一点。
而双位与单位这两种看法,可以借助「柯里化(currying)」这个概念统一起来;这个术语以数学家 Haskell Curry 命名。柯里化是某些编程语言允许的一种技巧。比如说,你除了可以写
x = plus(2, 3)(x = 5),
还可以写
y = plus(2)
(此时 y 已经是函数 plus 的一种“柯里化”形式,它吃掉了一个 2)
x = y(3)(x = 5)
z = y(7)(z = 9)。
所以 plus 是一个双位函数,但把 plus 柯里化——也就是只让它吃掉原本所需两个参数中的一个——就会把它变成一个单位函数,这个函数会对任何输入都加上 2。(类似地,你也可以从一个七位函数开始,先喂给它 4 个参数,那么结果就会变成一个三位函数,等等。)
一个真正纯粹的纯粹派会坚持认为:按定义,所有函数都应该被看成恰好只接收一个参数。在这种观点下,plus 接收一个数字输入,并输出一个新的函数;而这个新的函数再接收一个数字输入,最后输出一个数字。按照这种观点,当我们写 plus(2,3) 时,我们其实是在先计算 plus(2),得到一个会对任何输入都加 2 的函数,然后再把这个结果应用到 3 上。程序员会把它写成:
plus: int ➝ (int ➝ int)。
这表示 plus 接收一个 int 作为参数,并返回一个类型为 int ➝ int 的函数。
把这个隐喻重新翻译回人类对词语的使用,我们可以想象:「性感」一开始会先吃进一个 Admirer,然后吐出那个描述该 Admirer 当前如何评估美貌的、固定的数学对象。至于这个 Admirer 对可欲性的直觉,恰好是以一种与这个数学函数同构的方式被计算出来的——这是一个关于该 Admirer 的经验事实。
然后,通过把 Sexiness(Admirer) 柯里化所吐出的那个数学对象,就可以再应用到 Woman 身上。如果原先的 Admirer 是 Fred,那么 Sexiness(Fred) 首先返回的就会是 Sexiness_20934。接着我们就可以说:关于这个 Woman,存在一个独立于 Fred 的经验事实,即 Sexiness_20934(Woman) = 5。
在 Hilary Putnam 的「双生地球(Twin Earth)」思想实验里,曾经围绕下面这个设想爆发过一场巨大的哲学混战:假设存在一个和我们地球几乎一模一样的双生地球,只不过那里的水不是 H2O,而是另一种透明、流动的物质 XYZ。并且,进一步把思想实验的时间设定在几百年前,于是无论在我们的地球还是在双生地球上,都还没有人知道该如何检验 H2O 与 XYZ 这两个假说。于是问题就来了:那个世界里的 “water” 一词,与我们这个世界里的 “water” 一词,意思相同吗?
有人说:「相同,因为当地球人和双生地球人说出 ‘water’ 这个词时,他们脑中想的都是同样的感官检验。」
有人说:「不同,因为在我们地球上,‘water’ 意味着 H2O,而在双生地球上,‘water’ 意味着 XYZ。」
如果你把 “water” 看作一个概念,它首先会吃掉一个世界,以查明那种透明流动物的经验性真实本质,然后返回一个新的固定概念 Water42 或 H2O,那么这个“吃世界”的概念,在我们的地球和双生地球上其实是同一个;它只是在不同地方返回不同答案。
如果你把 “water” 理解成 H2O 的意思,那么这个概念在世界之间搬运时就什么也不会改变;而双生地球里根本就没有 H2O。
当然,去争论音节 “wa-ter” 真正意味着什么,本来就毫无意义。
所以,你是否应该选定一种定义并始终如一地使用它?但事情没那么容易;光这样还不足以把你自己从困惑里救出来。你必须训练自己,对概念的柯里化形式与未柯里化形式之间的区别保持刻意的觉察。
当你把那个未经柯里化的 water 概念拿到另一个世界去应用时,它是同一个概念,但它指向的是不同的东西;也就是说,我们是在把一个固定的“吃世界”函数应用到一个不同的世界上,从而得到一个不同的返回值。在双生地球上,XYZ 是 “water”,H2O 不是;而在我们的地球上,H2O 是 “water”,XYZ 不是。
另一方面,如果你把 “water” 理解成前一个思想者所谓的「把 ‘water’ 应用到我们地球之后所得的结果」,那么在双生地球上,XYZ 就不是 water,而 H2O 才是。
后来整场哲学争论之所以如此令人困惑,正是因为人们倾向于本能地把概念柯里化,或者本能地把它们反柯里化。
类似地,Fred 也需要额外走一步,才能意识到:其他行动者,比如凸眼怪物这一方,会根据 Sexiness_BEM(Woman) 而不是 Sexiness_Fred(Woman) 来挑选要掳走来蹂躏的对象。要做到这一点,Fred 必须有意识地重新把 Sexiness 设想为一个具有两个参数的函数。Fred 的大脑凭本能所做的,只是去计算 Woman.sexiness——也就是 Sexiness_Fred(Woman);但它只是被简单地标记成了 Woman.sexiness。
固定的数学函数 Sexiness_20934 根本没有提到 Fred 或凸眼怪物,只提到了女人,所以 Fred 本能上就看不出:为什么凸眼怪物会以不同方式来评估「性感」。而且事实上,如果凸眼怪物出于某种奇怪原因在乎的恰好也是那个特定函数的结果,那么它对 Sexiness_20934 的评估也不会有什么不同;但关于凸眼怪物,有一个经验事实是:它在决定该绑走谁时,用的是另一个不同的函数。
如果你在想,这整套分析到底有什么用,不妨试着把上面的这些区分拿去对付那些令人困惑的词,比如禁语掉 “objective”、“subjective” 和 “arbitrary” 这些词。